/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */
/*
 * TrainingBook
 * Copyright (C) Arnaud Duval 2010 <arnaud.duval@gmail.com>
 * 
 * TrainingBook is free software: you can redistribute it and/or modify it
 * under the terms of the GNU General Public License as published by the
 * Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * TrainingBook is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * See the GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License along
 * with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#ifndef _O_S_M_MAP_BOUNDING_BOX_HPP_
#define _O_S_M_MAP_BOUNDING_BOX_HPP_

///@class OsmMapBoundingBox
///@brief Define a bounding box for OpenStreetMap map
class OsmMapBoundingBox
{
	public:
		///@brief Default constructor
		OsmMapBoundingBox();
		///@brief Constructor with arguments
		OsmMapBoundingBox(double, double, double, double);
		///@brief Desctructor
		~OsmMapBoundingBox();
		///@brief Return minimum latitude
		double GetMinLat();
		///@brief Return maximum latitude
		double GetMaxLat();
		///@brief Return minimum longitude
		double GetMinLon();
		///@brief Return maximum longitude
		double GetMaxLon();
		///@brief Set the minimum latitude
		void SetMinLat(double);
		///@brief Set the maximum latitude
		void SetMaxLat(double);
		///@brief Set the minimum longitude
		void SetMinLon(double);
		///@brief Set the maximum longitude
		void SetMaxLon(double);
		///@brief Return the latitude of the center of the bouding box
		double GetCenterLat();
		///@brief Return the longitude of the center of the bouding box
		double GetCenterLon();
		///@brief Translate the bounding box
		void Translate(double, double);

	protected:

	private:
		///@brief Maximum longitude IN RADIANS
		double maxLon;
		///@brief Minimum longitude IN RADIANS
		double minLon;
		///@brief Maximum latitude IN RADIANS
		double maxLat;
		///@brief Minimum latitude IN RADIANS
		double minLat;
};


#endif //_O_S_M_MAP_BOUNDING_BOX_HPP_//
